console.log("hello");
const num = 3;
console.log(num);

function fn(name: string, aaa?: number): string;
function fn(age: number, aaa?: string): number;
function fn(arg1: string | number, aaa?: number | string) {
    return arg1;
}

const a = fn(123)

class Aaa {
    public name: string;
    static age: number = 123;
    constructor() {
        this.name = "123"
    }

    static fnTest() {
        console.log("static fn", this);
        
    }
}
class Bb extends Aaa {
    constructor() {
        super()
    }
    fn() {
        console.log("fn");
    }
}


function Cc(a: string){
    this.a = a;
    // this.a = "asdf";
    // this.fn = function() {
    //     console.log("fn");
    // }
}
Cc.prototype.a = "aaaadsf"
Cc.prototype.fn = function() {}

function Dd() {
    Cc.apply(this, ["asf"])
}
Dd.prototype = Cc.prototype
Dd.prototype.fn2 = () => {};
Dd.prototype.constructor = Dd
Aaa.fnTest()
const testClass = new Aaa()
const test = new Bb();
// test.fn()
console.log(test);
const testCc = new Cc("asdf");
const testDd = new Dd();
console.log(typeof testCc);
console.log(testDd);


export default num;
